oracle

推荐列表 站点导航

当前位置:首页 > 数据库 > oracle >

oracle 层次化查询(行政区划三级级联)

来源:网络整理  作者:网络  发布时间:2020-12-12 02:34
现在将上面的行政区划按代码分为三个级别:省(后四位为0)/市(后两位为0)/县,同时分别标出他们的级别,这样...
13 3 230124 方正县 230100
6 3 230104 道外区 230100
(select t.dm,t.mc,case
when substr(t.dm,5)='00' then to_number(substr(t.dm,1,2)||'0000')
首先,根据上面表拓展出新的一行sjbm,该行用于表示该行政区划所属的上级行政区划。具体代码如下:
1 230000 黑龙江省 1
when substr(t.dm,5)!='00' then to_number(substr(t.dm,1,4)||'00')
14 238000 农垦分局 230000
21 3 230184 五常市 230100
14 3 230125 宾县 230100


19 3 230182 双城市 230100
9 230109 松北区 230100
8 3 230109 松北区 230100
select level,dm,mc,sjbm from
数据库表DM_xzqh样例(部分):
230101 市辖区
238000 农垦分局
232700 大兴安岭
22 230183 尚志市 230100
230125 宾县
21 230182 双城市 230100
select t.dm,t.mc,case
230126 巴彦县
12 230112 阿城区 230100
230102 道里区

序号 DM MC SJBM
11 3 230112 阿城区 230100
13 230123 依兰县 230100
230000 黑龙江省
16 3 230127 木兰县 230100
230123 依兰县
序号 level DM MC SJBM


18 230127 木兰县 230100
230111 呼兰区

复制代码 代码如下:

15 3 230126 巴彦县 230100
17 3 230128 通河县 230100

复制代码 代码如下:

connect by prior dm=sjbm
3 3 230101 市辖区 230100//县,level->3
230109 松北区
230110 香坊区
10 230110 香坊区 230100
结果如下:
2 2 230100 哈尔滨市 230000//市,level->2
[where level=2 ]--该条件语句用于查询具体的每一个级别的行政区划
230103 南岗区
DM MC
12 3 230123 依兰县 230100
11 230111 呼兰区 230100
5 232700 大兴安岭 230000

230128 通河县
230104 道外区
前提:
6 230103 南岗区 230100
7 3 230108 平房区 230100

22 2 232700 大兴安岭地区 230000 然后,就可以利用oracle的层次关系将该查询出的数据分级了,具体代码如下:
19 230128 通河县 230100
230182 双城市
end sjbm from dm_xzqh t
230108 平房区

else 0
when substr(t.dm,3)='0000' then 1
10 3 230111 呼兰区 230100
when substr(t.dm,3)='0000' then 1
现在将上面的行政区划按代码分为三个级别:省(后四位为0)/市(后两位为0)/县,同时分别标出他们的级别,这样的话,便于后期根据不同的级别查询。

230127 木兰县
5 3 230103 南岗区 230100
18 3 230129 延寿县 230100
20 230129 延寿县 230100
when substr(t.dm,5)='00' then to_number(substr(t.dm,1,2)||'0000')
9 3 230110 香坊区 230100
230129 延寿县
230112 阿城区
230183 尚志市
结果如下:
15 230124 方正县 230100
16 230125 宾县 230100
8 230108 平房区 230100
1 1 230000 黑龙江省 1 //省 ,level->1
7 230104 道外区 230100
4 230102 道里区 230100
17 230126 巴彦县 230100
20 3 230183 尚志市 230100
4 3 230102 道里区 230100

复制代码 代码如下:

when substr(t.dm,5)!='00' then to_number(substr(t.dm,1,4)||'00') end sjbm from dm_xzqh t)
[order by level];



start with sjbm=1
230100 哈尔滨市
3 230101 市辖区 230100
2 230100 哈尔滨市 230000
230124 方正县

相关热词: oracle

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!

本文地址: https://v30.fanwenzhu.com/sql/oracle/2766.shtml

Copyright © www.juheyunku.com      关于 | 合作 | 声明 | 联系 | 更新 | 地图 | Tags

oracle 层次化查询(行政区划三级级联)

2020-12-12 编辑:网络

13 3 230124 方正县 230100
6 3 230104 道外区 230100
(select t.dm,t.mc,case
when substr(t.dm,5)='00' then to_number(substr(t.dm,1,2)||'0000')
首先,根据上面表拓展出新的一行sjbm,该行用于表示该行政区划所属的上级行政区划。具体代码如下:
1 230000 黑龙江省 1
when substr(t.dm,5)!='00' then to_number(substr(t.dm,1,4)||'00')
14 238000 农垦分局 230000
21 3 230184 五常市 230100
14 3 230125 宾县 230100


19 3 230182 双城市 230100
9 230109 松北区 230100
8 3 230109 松北区 230100
select level,dm,mc,sjbm from
数据库表DM_xzqh样例(部分):
230101 市辖区
238000 农垦分局
232700 大兴安岭
22 230183 尚志市 230100
230125 宾县
21 230182 双城市 230100
select t.dm,t.mc,case
230126 巴彦县
12 230112 阿城区 230100
230102 道里区

序号 DM MC SJBM
11 3 230112 阿城区 230100
13 230123 依兰县 230100
230000 黑龙江省
16 3 230127 木兰县 230100
230123 依兰县
序号 level DM MC SJBM


18 230127 木兰县 230100
230111 呼兰区

复制代码 代码如下:

15 3 230126 巴彦县 230100
17 3 230128 通河县 230100

复制代码 代码如下:

connect by prior dm=sjbm
3 3 230101 市辖区 230100//县,level->3
230109 松北区
230110 香坊区
10 230110 香坊区 230100
结果如下:
2 2 230100 哈尔滨市 230000//市,level->2
[where level=2 ]--该条件语句用于查询具体的每一个级别的行政区划
230103 南岗区
DM MC
12 3 230123 依兰县 230100
11 230111 呼兰区 230100
5 232700 大兴安岭 230000

230128 通河县
230104 道外区
前提:
6 230103 南岗区 230100
7 3 230108 平房区 230100

22 2 232700 大兴安岭地区 230000 然后,就可以利用oracle的层次关系将该查询出的数据分级了,具体代码如下:
19 230128 通河县 230100
230182 双城市
end sjbm from dm_xzqh t
230108 平房区

else 0
when substr(t.dm,3)='0000' then 1
10 3 230111 呼兰区 230100
when substr(t.dm,3)='0000' then 1
现在将上面的行政区划按代码分为三个级别:省(后四位为0)/市(后两位为0)/县,同时分别标出他们的级别,这样的话,便于后期根据不同的级别查询。

230127 木兰县
5 3 230103 南岗区 230100
18 3 230129 延寿县 230100
20 230129 延寿县 230100
when substr(t.dm,5)='00' then to_number(substr(t.dm,1,2)||'0000')
9 3 230110 香坊区 230100
230129 延寿县
230112 阿城区
230183 尚志市
结果如下:
15 230124 方正县 230100
16 230125 宾县 230100
8 230108 平房区 230100
1 1 230000 黑龙江省 1 //省 ,level->1
7 230104 道外区 230100
4 230102 道里区 230100
17 230126 巴彦县 230100
20 3 230183 尚志市 230100
4 3 230102 道里区 230100

复制代码 代码如下:

when substr(t.dm,5)!='00' then to_number(substr(t.dm,1,4)||'00') end sjbm from dm_xzqh t)
[order by level];



start with sjbm=1
230100 哈尔滨市
3 230101 市辖区 230100
2 230100 哈尔滨市 230000
230124 方正县

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供学习参考!
本文地址为 https://v30.fanwenzhu.com/sql/oracle/2766.shtml

相关文章

风云图片

推荐阅读

返回oracle频道首页